package exam.huawei.string;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 报文
 * 题目描述
 * 对报文进行重传和重排序Q是常用的可靠性机制，重传缓中区内有一定数量的子报文，每个子报文在原始报文中的顺序已知，现在需要恢复出原始报文
 * <p>
 * 输入描述
 * 输入第一行为N，表示子报文的个数，0 <N s 1000。
 * 输入第二行为N个子报文，以空格分开，子报文格式为:字符审报文内容+后缀顺序索引
 * 字符串报文内容由[a-z,A-乙]组成，后缀为整型值，表示顺序。顺序值唯一，不重复。
 * <p>
 * 用例：rolling3 stone4 like1 a2
 */
public class Example01 {

    /**
     * 1、注意StringJoiner拼接字符串的用法
     * 2、可以使用map的映射关系处理报文
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        String[] strArr = str.split(" ");
        LinkedHashMap<String, String> map = new LinkedHashMap<>();
        for (int i = 0; i < strArr.length; i++) {
            String key = strArr[i].substring(strArr[i].length() - 1);
            String content = strArr[i].substring(0, strArr[i].length() - 1);
            map.put(key, content);
        }
        Set<String> keySet = map.keySet();
        List<String> keyList = keySet.stream().sorted().collect(Collectors.toList());

        StringJoiner stringJoiner = new StringJoiner(" ");
        for (String k : keyList) {
            stringJoiner.add(map.get(k));
        }
        System.out.println(stringJoiner.toString());
    }
}
